// 普通交叉类型
type newType = number & string
let a:newType
// 接口实现交叉类型
interface A {
  d: number
  z: string
}
interface B {
  d: string
  e: string
  g: string
}
type C = A & B
// c.d = '1'
// c.d = 1 // 交叉类型中有属性冲突的时候，无论如何赋值都无法通过检查

type D = A | B
let d: D = {d: 1, z: 'z'}
d.d = 100
console.log('d', d) // d { d: 100, z: 'z' }